{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "60d4f2f3-0e04-46ba-a7a4-ce723abe9c5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2023-10-11 08:05:19.726206: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
      "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
      "2023-10-11 08:05:20.641219: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2023-10-11 08:05:23,027] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "from itertools import islice\n",
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline\n",
    "\n",
    "# Local task dataloaders\n",
    "sys.path.append('../')\n",
    "from tasks import task_dataset\n",
    "\n",
    "# load repe module\n",
    "from repe import repe_pipeline_registry\n",
    "repe_pipeline_registry()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6e985c96-4df2-42d0-82d1-14cd4fbec28b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "32daf0b5f2ba4932bbc3e96b469a7d33",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_name_or_path = \"meta-llama/Llama-2-7b-hf\"\n",
    "\n",
    "model = AutoModelForCausalLM.from_pretrained(model_name_or_path, torch_dtype=torch.bfloat16, device_map=\"auto\", token=True).eval()\n",
    "use_fast_tokenizer = \"LlamaForCausalLM\" not in model.config.architectures\n",
    "tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=use_fast_tokenizer, padding_side=\"left\", legacy=False, token=True)\n",
    "tokenizer.pad_token_id = 0 if tokenizer.pad_token_id is None else tokenizer.pad_token_id\n",
    "tokenizer.bos_token_id = 1\n",
    "\n",
    "rep_pipeline =  pipeline(\"rep-reading\", model=model, tokenizer=tokenizer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f097707c-5256-47ae-9c6d-39f79e8ea6fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "max_length = 2048\n",
    "\n",
    "rep_token = -1\n",
    "hidden_layers = list(range(-1, -model.config.num_hidden_layers, -1))\n",
    "n_difference = 1\n",
    "direction_method = 'pca'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "10f3042e-2667-46c4-89bf-52e0fafe0a71",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Found cached dataset ai2_arc (/data/long_phan/.cache/huggingface/datasets/ai2_arc/ARC-Challenge/1.0.0/1569c2591ea2683779581d9fb467203d9aa95543bb9b75dcfde5da92529fd7f6)\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "36c8ccfa0a7c419ba87dae1faef443e8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/3 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading cached processed dataset at /data/long_phan/.cache/huggingface/datasets/ai2_arc/ARC-Challenge/1.0.0/1569c2591ea2683779581d9fb467203d9aa95543bb9b75dcfde5da92529fd7f6/cache-2ccd5ce024f76298.arrow\n",
      "Loading cached shuffled indices for dataset at /data/long_phan/.cache/huggingface/datasets/ai2_arc/ARC-Challenge/1.0.0/1569c2591ea2683779581d9fb467203d9aa95543bb9b75dcfde5da92529fd7f6/cache-e30699b38f84da3f.arrow\n"
     ]
    }
   ],
   "source": [
    "# Define tasks and #shots here\n",
    "\n",
    "# task, ntrain = 'obqa', 5\n",
    "# task, ntrain = 'csqa', 7\n",
    "task, ntrain = 'arc_challenge', 25\n",
    "# task, ntrain = 'race', 3\n",
    "\n",
    "\n",
    "dataset = task_dataset(task)(ntrain=ntrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "ef5d269b-6da7-47b4-abf8-f538923f594e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Build an unsupervised LAT PCA representation\n",
    "direction_finder_kwargs= {\"n_components\": 1}\n",
    "rep_reader = rep_pipeline.get_directions(\n",
    "    dataset['train']['data'], \n",
    "    rep_token=rep_token, \n",
    "    hidden_layers=hidden_layers, \n",
    "    n_difference=n_difference, \n",
    "    train_labels=dataset['train']['labels'], \n",
    "    direction_method=direction_method,\n",
    "    direction_finder_kwargs=direction_finder_kwargs,\n",
    "    batch_size=batch_size,\n",
    "    max_length=max_length,\n",
    "    padding=\"longest\",\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "257ab291-2bd7-4c98-85fd-e6b67eeb263e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-1 : 0.49498327759197325\n",
      "=====\n",
      "-2 : 0.5050167224080268\n",
      "=====\n",
      "-3 : 0.5016722408026756\n",
      "=====\n",
      "-4 : 0.5083612040133779\n",
      "=====\n",
      "-5 : 0.5016722408026756\n",
      "=====\n",
      "-6 : 0.5250836120401338\n",
      "=====\n",
      "-7 : 0.5250836120401338\n",
      "=====\n",
      "-8 : 0.5284280936454849\n",
      "=====\n",
      "-9 : 0.5016722408026756\n",
      "=====\n",
      "-10 : 0.4983277591973244\n",
      "=====\n",
      "-11 : 0.5183946488294314\n",
      "=====\n",
      "-12 : 0.5217391304347826\n",
      "=====\n",
      "-13 : 0.5250836120401338\n",
      "=====\n",
      "-14 : 0.5317725752508361\n",
      "=====\n",
      "-15 : 0.5050167224080268\n",
      "=====\n",
      "-16 : 0.5317725752508361\n",
      "=====\n",
      "-17 : 0.46488294314381273\n",
      "=====\n",
      "-18 : 0.4916387959866221\n",
      "=====\n",
      "-19 : 0.5250836120401338\n",
      "=====\n",
      "-20 : 0.3311036789297659\n",
      "=====\n",
      "-21 : 0.3177257525083612\n",
      "=====\n",
      "-22 : 0.27759197324414714\n",
      "=====\n",
      "-23 : 0.2909698996655518\n",
      "=====\n",
      "-24 : 0.3076923076923077\n",
      "=====\n",
      "-25 : 0.29431438127090304\n",
      "=====\n",
      "-26 : 0.27424749163879597\n",
      "=====\n",
      "-27 : 0.26421404682274247\n",
      "=====\n",
      "-28 : 0.23745819397993312\n",
      "=====\n",
      "-29 : 0.2408026755852843\n",
      "=====\n",
      "-30 : 0.2408026755852843\n",
      "=====\n",
      "-31 : 0.24414715719063546\n",
      "=====\n"
     ]
    }
   ],
   "source": [
    "# Eval validation\n",
    "results_val = {layer: {} for layer in hidden_layers}\n",
    "labels = dataset['val']['labels']\n",
    "H_tests = rep_pipeline(dataset['val']['data'],\n",
    "                    rep_token=rep_token, \n",
    "                    hidden_layers=hidden_layers, \n",
    "                    rep_reader=rep_reader,\n",
    "                    batch_size=8,\n",
    "                    max_length=2048,\n",
    "                    padding=\"longest\")\n",
    "\n",
    "for layer in hidden_layers:\n",
    "    H_test = [H[layer] for H in H_tests] \n",
    "    unflattened_H_tests = [list(islice(H_test, sum(len(c) for c in labels[:i]), sum(len(c) for c in labels[:i+1]))) for i in range(len(labels))]\n",
    "\n",
    "    sign = rep_reader.direction_signs[layer]\n",
    "    eval_func = np.argmin if sign == -1 else np.argmax\n",
    "    cors = np.mean([labels[i].index(1) == eval_func(H) for i, H in enumerate(unflattened_H_tests)])\n",
    "\n",
    "    results_val[layer] = cors\n",
    "    \n",
    "    print(f\"{layer} : {cors}\")\n",
    "    print(\"=====\")    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "4a087af5-45a9-4a74-921f-d1b068ea1113",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-1 : 0.5349829351535836\n",
      "=====\n",
      "-2 : 0.5443686006825939\n",
      "=====\n",
      "-3 : 0.5494880546075085\n",
      "=====\n",
      "-4 : 0.5511945392491467\n",
      "=====\n",
      "-5 : 0.5486348122866894\n",
      "=====\n",
      "-6 : 0.5469283276450512\n",
      "=====\n",
      "-7 : 0.5477815699658704\n",
      "=====\n",
      "-8 : 0.5494880546075085\n",
      "=====\n",
      "-9 : 0.5494880546075085\n",
      "=====\n",
      "-10 : 0.5486348122866894\n",
      "=====\n",
      "-11 : 0.5460750853242321\n",
      "=====\n",
      "-12 : 0.5486348122866894\n",
      "=====\n",
      "-13 : 0.5307167235494881\n",
      "=====\n",
      "-14 : 0.5307167235494881\n",
      "=====\n",
      "-15 : 0.5136518771331058\n",
      "=====\n",
      "-16 : 0.5307167235494881\n",
      "=====\n",
      "-17 : 0.4641638225255973\n",
      "=====\n",
      "-18 : 0.4974402730375427\n",
      "=====\n",
      "-19 : 0.5162116040955631\n",
      "=====\n",
      "-20 : 0.3191126279863481\n",
      "=====\n",
      "-21 : 0.30887372013651876\n",
      "=====\n",
      "-22 : 0.24232081911262798\n",
      "=====\n",
      "-23 : 0.257679180887372\n",
      "=====\n",
      "-24 : 0.2551194539249147\n",
      "=====\n",
      "-25 : 0.2593856655290102\n",
      "=====\n",
      "-26 : 0.23293515358361774\n",
      "=====\n",
      "-27 : 0.24658703071672355\n",
      "=====\n",
      "-28 : 0.257679180887372\n",
      "=====\n",
      "-29 : 0.24146757679180889\n",
      "=====\n",
      "-30 : 0.26706484641638223\n",
      "=====\n",
      "-31 : 0.2508532423208191\n",
      "=====\n"
     ]
    }
   ],
   "source": [
    "# Eval Test\n",
    "results_test = {layer: {} for layer in hidden_layers}\n",
    "labels = dataset['test']['labels']\n",
    "H_tests = rep_pipeline(dataset['test']['data'], \n",
    "                    rep_token=rep_token, \n",
    "                    hidden_layers=hidden_layers, \n",
    "                    rep_reader=rep_reader,\n",
    "                    batch_size=8,\n",
    "                    max_length=2048,\n",
    "                    padding=\"longest\")\n",
    "\n",
    "for layer in hidden_layers:\n",
    "    H_test = [H[layer] for H in H_tests] \n",
    "    unflattened_H_tests = [list(islice(H_test, sum(len(c) for c in labels[:i]), sum(len(c) for c in labels[:i+1]))) for i in range(len(labels))]\n",
    "\n",
    "    sign = rep_reader.direction_signs[layer]\n",
    "    eval_func = np.argmin if sign == -1 else np.argmax\n",
    "    cors = np.mean([labels[i].index(1) == eval_func(H) for i, H in enumerate(unflattened_H_tests)])\n",
    "\n",
    "    results_test[layer] = cors\n",
    "    \n",
    "    print(f\"{layer} : {cors}\")\n",
    "    print(\"=====\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "c0bcd823-6a3a-4c67-b752-2fd890b4df80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAHHCAYAAABQhTneAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACL10lEQVR4nOzdd3gU1dfA8e/spveEdAhJCBB6CxBBEJRQBAtWsFFURJTXEhXFgoL8RFERO4pSFAQEFbFRBRUJvfcaQggJAdLrZnfeP4YsxCRkUzflfJ5nH3ZnZ2bP3mzYkzv33qOoqqoihBBCCNFA6KwdgBBCCCFETZLkRwghhBANiiQ/QgghhGhQJPkRQgghRIMiyY8QQgghGhRJfoQQQgjRoEjyI4QQQogGRZIfIYQQQjQokvwIIYQQokGR5EeIem7Dhg0oisKyZcuq7JxvvPEGiqIU2RYSEsKoUaOq7DWERlEUxo8fb+0whKhXJPkRQohrmDBhAoqiMGzYMGuHUm2qI0EWojaT5EcIIUqhqiqLFi0iJCSEX375hYyMDGuHJISoApL8CFHDsrKyrB2CsNCGDRuIj49nzpw5FBQU8OOPP1o7JIGWlObk5Fg7DFGHSfIjRAWcPn2aJ554gvDwcBwdHWnUqBH33HMPsbGxRfabN28eiqLw119/8cQTT+Dr60uTJk3Mz//xxx/06dMHV1dX3Nzc6NatG9999125YklNTeXZZ58lJCQEe3t7mjRpwogRI7hw4UKR/UwmE//73/9o0qQJDg4O9OvXj+PHjxfZ559//uGee+6hadOm2NvbExQUxLPPPlvhL5rU1FSeeeYZgoKCsLe3p3nz5rzzzjuYTCbzPrGxsSiKwnvvvceXX35JWFgY9vb2dOvWjW3bthU759KlS2nTpg0ODg60a9eOn376iVGjRhESElLs/c6cOZO2bdvi4OCAn58fY8eOJSUlxeL4Fy5cSJs2bbjxxhuJiopi4cKFJe539uxZHnnkEQIDA7G3tyc0NJRx48aRn59fpC0s+TldK5bw8HAcHByIiIjg77//Nj+3fv16FEXhp59+Knbcd999h6IoxMTEWPy+S/Pee+/Rs2dPGjVqhKOjIxEREcUulfXp04eOHTuWeHx4eDgDBw40P7b0ZxQSEsItt9zCqlWr6Nq1K46OjnzxxReVfj+i4bKxdgBC1EXbtm1j06ZNDB8+nCZNmhAbG8vnn39O3759OXjwIE5OTkX2f+KJJ/Dx8WHSpEnmnp958+bx8MMP07ZtWyZOnIiHhwe7du1i5cqV3H///RbFkZmZSe/evTl06BAPP/wwXbp04cKFC6xYsYL4+Hi8vb3N+7799tvodDqef/550tLSmD59Og888ABbtmwx77N06VKys7MZN24cjRo1YuvWrXz88cfEx8ezdOnScrVRdnY2ffr04ezZs4wdO5amTZuyadMmJk6cyLlz55g5c2aR/b/77jsyMjIYO3YsiqIwffp07rzzTk6ePImtrS0Av/32G8OGDaN9+/ZMmzaNlJQUHnnkERo3blzs9ceOHcu8efMYPXo0Tz31FKdOneKTTz5h165d/Pvvv+ZzliYvL48ffviB5557DoD77ruP0aNHk5iYiL+/v3m/hIQEunfvTmpqKo899hitWrXi7NmzLFu2jOzsbOzs7Mr1cyrJX3/9xZIlS3jqqaewt7fns88+Y9CgQWzdupV27drRt29fgoKCWLhwIXfccUeRYxcuXEhYWBg9evS45mtY4sMPP+S2227jgQceID8/n8WLF3PPPffw66+/MmTIEAAeeughxowZw/79+2nXrp352G3btnH06FFeffVV87by/IyOHDnCfffdx9ixYxkzZgzh4eGVfj+iAVOFEOWWnZ1dbFtMTIwKqN98841529y5c1VA7dWrl1pQUGDenpqaqrq6uqqRkZFqTk5OkfOYTCaL45g0aZIKqD/++GOx5wrPs379ehVQW7durebl5Zmf//DDD1VA3bdv3zXf17Rp01RFUdTTp0+bt73++uvqf//7CA4OVkeOHGl+/Oabb6rOzs7q0aNHi+z30ksvqXq9Xo2Li1NVVVVPnTqlAmqjRo3US5cumff7+eefVUD95ZdfzNvat2+vNmnSRM3IyDBv27BhgwqowcHB5m3//POPCqgLFy4s8torV64scXtJli1bpgLqsWPHVFVV1fT0dNXBwUH94IMPiuw3YsQIVafTqdu2bSt2jsKfgSU/p9IAKqBu377dvO306dOqg4ODescdd5i3TZw4UbW3t1dTU1PN286fP6/a2Nior7/++jVfo/AzsnTp0mvu99/PR35+vtquXTv1pptuMm9LTU1VHRwc1BdffLHIvk899ZTq7OysZmZmqqpavp9RcHCwCqgrV668ZnxCWEouewlRAY6Ojub7BoOBixcv0rx5czw8PNi5c2ex/ceMGYNerzc/XrNmDRkZGbz00ks4ODgU2fe/U8iv5YcffqBjx47F/tov6TyjR4/Gzs7O/Lh3794AnDx5ssT3lZWVxYULF+jZsyeqqrJr1y6L4wKtF6l37954enpy4cIF8y0qKgqj0Vjksg3AsGHD8PT0LDW+hIQE9u3bx4gRI3BxcTHv16dPH9q3b1/std3d3enfv3+R146IiMDFxYX169eXGf/ChQvp2rUrzZs3B8DV1ZUhQ4YUufRlMplYvnw5t956K127di12jsKfQXl+TiXp0aMHERER5sdNmzbl9ttvZ9WqVRiNRgBGjBhBXl5ekctQS5YsoaCggAcffLDM17DE1Z+PlJQU0tLS6N27d5HPvLu7O7fffjuLFi1CVVUAjEYjS5YsYejQoTg7OwPl/xmFhoYWuWQmRGVI8iNEBeTk5DBp0iTzWBZvb298fHxITU0lLS2t2P6hoaFFHp84cQKgyGWBijhx4oTF52jatGmRx4WJxtXjK+Li4hg1ahReXl64uLjg4+NDnz59AEp8X9dy7NgxVq5ciY+PT5FbVFQUAOfPny9XfKdPnwYwJyNX+++2Y8eOkZaWhq+vb7HXz8zMLPba/5Wamsrvv/9Onz59OH78uPl2/fXXs337do4ePQpAcnIy6enpZf4MyvNzKkmLFi2KbWvZsiXZ2dkkJycD0KpVK7p161YkOVu4cCHXXXddiW1WEb/++ivXXXcdDg4OeHl54ePjw+eff17sszFixAji4uL4559/AFi7di1JSUk89NBD5n3K+zP67++QEJUhY36EqID/+7//Y+7cuTzzzDP06NEDd3d3FEVh+PDhRQbzFrr6L2Zrubrn6WpX/3Xev39/Ll26xIsvvkirVq1wdnbm7NmzjBo1qsT3dS0mk4n+/fszYcKEEp9v2bJlueIr72v7+vqWOkDZx8fnmscvXbqUvLw83n//fd5///1izy9cuJDJkyeXO67qNmLECJ5++mni4+PJy8tj8+bNfPLJJ1Vy7n/++YfbbruNG264gc8++4yAgABsbW2ZO3dusUH6AwcOxM/PjwULFnDDDTewYMEC/P39zYkvlP9nVBt+h0T9IcmPEBWwbNkyRo4cWeSLMTc3l9TUVIuODwsLA2D//v2V+qs8LCyM/fv3V/j4q+3bt4+jR48yf/58RowYYd6+Zs2aCseWmZlZ5AuvMoKDgwGKzVAraVtYWBhr167l+uuvr9CX5sKFC2nXrh2vv/56see++OILvvvuOyZPnoyPjw9ubm5l/gwq+3M6duxYsW1Hjx7FycmpSJIwfPhwoqOjWbRoETk5Odja2lbZ4ow//PADDg4OrFq1Cnt7e/P2uXPnFttXr9dz//33M2/ePN555x2WL19e7NJvZX9GQlSGXPYSogL0en2xHomPP/7YPP6iLAMGDMDV1ZVp06aRm5tb5Lny9HTcdddd7Nmzp8QpzuXtMSn8Yrr6OFVV+fDDD8t1nkL33nsvMTExrFq1qthzqampFBQUlOt8gYGBtGvXjm+++YbMzEzz9r/++ot9+/YVe22j0cibb75Z7DwFBQXXTFLPnDnD33//zb333svdd99d7DZ69GiOHz/Oli1b0Ol0DB06lF9++YXt27cXO1dhW1b25xQTE1NkXM2ZM2f4+eefGTBgQJGEwtvbm5tvvpkFCxawcOFCBg0aVOZMMkvp9XoURSnyGY+NjWX58uUl7v/QQw+RkpLC2LFjyczMLDbuqDI/IyEqS3p+hKiAW265hW+//RZ3d3fatGlDTEwMa9eupVGjRhYd7+bmxgcffMCjjz5Kt27duP/++/H09GTPnj1kZ2czf/58i87zwgsvsGzZMu655x4efvhhIiIiuHTpEitWrGDWrFmlrrdSklatWhEWFsbzzz/P2bNncXNz44cffijXujj/jW3FihXccsstjBo1ioiICLKysti3bx/Lli0jNja23F/Mb731FrfffjvXX389o0ePJiUlhU8++YR27doVSYj69OnD2LFjmTZtGrt372bAgAHY2tpy7Ngxli5dyocffsjdd99d4mt89913qKrKbbfdVuLzgwcPxsbGhoULFxIZGclbb73F6tWr6dOnD4899hitW7fm3LlzLF26lI0bN+Lh4VHpn1O7du0YOHBgkanuQImX3kaMGGF+byUlFtfyww8/cPjw4WLbR44cyZAhQ5gxYwaDBg3i/vvv5/z583z66ac0b96cvXv3Fjumc+fOtGvXjqVLl9K6dWu6dOlS5PnK/IyEqDTrTDITom5LSUlRR48erXp7e6suLi7qwIED1cOHDxeb7l041b2kadCqqqorVqxQe/bsqTo6Oqpubm5q9+7d1UWLFpUrlosXL6rjx49XGzdurNrZ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YzKZ+OKLL2jevDn79+9nzJgxZGVl8d577xXZd+3atbRt29b8uFGjRjUdrlVZ0lby2boiPz+fe+65hx49evD111+Xut/cuXMZNGiQ+XFpX/71WVltZTQaGTJkCP7+/mzatIlz584xYsQIbG1teeutt6wQce0zZcoUxowZY37s6upqxWhqhyVLlhAdHc2sWbOIjIxk5syZDBw4kCNHjuDr61u+k6mizvn5559VRVHU/Px8VVVV9bPPPlM9PT3VvLw88z4vvviiGh4ebq0Qa5Xp06eroaGh5senTp1SAXXXrl3WC6qW+m9byWeruLlz56ru7u4lPgeoP/30U43GU5uV1la///67qtPp1MTERPO2zz//XHVzcyvyWWuogoOD1Q8++MDaYdQ63bt3V5988knzY6PRqAYGBqrTpk0r97nkslcdc+nSJRYuXEjPnj2xtbUFICYmhhtuuAE7OzvzfoXZcEpKirVCrTXS0tLw8vIqtv22227D19eXXr16sWLFCitEVvv8t63ks1V+Tz75JN7e3nTv3p05c+agylJqxcTExNC+fXv8/PzM2wYOHEh6ejoHDhywYmS1x9tvv02jRo3o3Lkz7777boO/JJifn8+OHTuIiooyb9PpdERFRRETE1Pu80nyU0e8+OKLODs706hRI+Li4vj555/NzyUmJhb5TwQwP05MTKzROGub48eP8/HHHzN27FjzNhcXF95//32WLl3Kb7/9Rq9evRg6dGiDT4BKaiv5bJXPlClT+P7771mzZg133XUXTzzxBB9//LG1w6p15HN1bU899RSLFy9m/fr1jB07lrfeeosJEyZYOyyrunDhAkajscTPTUU+M5L8WMlLL71U4uDIq2+HDx827//CCy+wa9cuVq9ejV6vZ8SIEQ3qL8rythfA2bNnGTRoEPfcc0+Ra+fe3t5ER0cTGRlJt27dePvtt3nwwQd59913a/ptVYuqbKv6riJtdS2vvfYa119/PZ07d+bFF19kwoQJDfpzJa4oT/tFR0fTt29fOnTowOOPP87777/Pxx9/TF5enpXfRf0hA56t5LnnnmPUqFHX3KdZs2bm+97e3nh7e9OyZUtat25NUFAQmzdvpkePHvj7+5OUlFTk2MLH/v7+VR67NZS3vRISErjxxhvp2bMnX375ZZnnj4yMZM2aNZUNs1aoyraq75+t8rZVeUVGRvLm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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = list(results_val.keys())\n",
    "y_val = [results_val[layer] for layer in hidden_layers]\n",
    "y_test = [results_test[layer] for layer in hidden_layers]\n",
    "\n",
    "\n",
    "plt.plot(x, y_val, label=\"Dev\")\n",
    "plt.plot(x, y_test, label=\"Test\")\n",
    "\n",
    "plt.title(f\"{task} Acc by Layer\")\n",
    "plt.xlabel(\"Layer\")\n",
    "plt.ylabel(\"Acc\")\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
